package com.wlr.study.pointsword;

import com.wlr.study.Test;

/**
 * 二维数组中的查找
 * 在一个 n * m 的二维数组中，每一行都按照从左到右递增的顺序排序，每一列都按照从上到下递增的顺序排序。
 * 请完成一个高效的函数，输入这样的一个二维数组和一个整数，判断数组中是否含有该整数。
 *
 * @author lrwang
 * @version 1.0
 * @date 2022/3/30 18:16
 */
public class Offer04 {
    public boolean findNumberIn2DArray(int[][] matrix, int target) {
        if (matrix == null || matrix.length == 0 || matrix[0].length == 0) {
            return false;
        }
        int rows = matrix.length, columns = matrix[0].length;
        int row = 0, column = columns - 1;
        while (row < rows && column >= 0) {
            int num = matrix[row][column];
            if (num == target) {
                return true;
            } else if (num > target) {
                column--;
            } else {
                row++;
            }
        }
        return false;
    }

    public static void main(String[] args) {
        Offer04 solution = new Offer04();
        int[][] nums = new int[][]{{2, 5, 8, 11, 15}, {3, 6, 9, 12, 19}, {4, 7, 10, 16, 22}, {10, 13, 14, 17, 24}, {18, 21, 23, 26, 30}};
        int[][] nums1 = new int[][]{{5},{6}};

        System.out.println(solution.findNumberIn2DArray(nums1, 6));
    }
}
